home *** CD-ROM | disk | FTP | other *** search
- #include "inc.h"
- #include "defs.h"
- #include "zz_pointer.h"
- #include <ctype.h>
- #include <devices/printer.h>
- #include <hardware/cia.h>
-
- extern int volume;
- extern int polymode;
- extern int sources;
- extern int ams1,ams2;
- extern int prsfreq;
- extern int vibdepth;
- extern int vibpres;
- extern int pitchbend;
- extern int lfospeed;
- extern int lfoshape;
- extern int kscurve;
- extern int vibwheel;
- extern int autodepth;
- extern int autotime;
- extern int autobendvel;
- extern int autobendks;
-
- extern int mute[4];
- extern int fine[4];
- extern int coarse[4];
- extern int wave[4];
- extern int keytrack[4];
- extern int vibabend[4];
- extern int prsonfreq[4];
- extern int velcurve[4];
- extern int envlevel[4];
- extern int envdelay[4];
- extern int envattack[4];
- extern int envdecay[4];
- extern int envsustain[4];
- extern int envrelease[4];
- extern int levelmodvel[4];
- extern int levelmodprs[4];
- extern int levelmodks[4];
- extern int timemodvel[4];
- extern int timemodks[4];
- extern int freqksfreq[4];
-
- extern int soundnr[8];
- extern int banknr[8];
- extern int zonelow[8];
- extern int zonehigh[8];
- extern int poly[8];
- extern int output[8];
- extern int mode[8];
- extern int rcvch[8];
- extern int velo[8];
- extern int transpose[8];
- extern int tune[8];
- extern int level[8];
-
- extern char *ToneName[12];
- extern char *ModName[6];
- extern char *ShapeName[4];
- extern char *ModName[6];
- extern char *PolyName[3];
- extern char *WaveName[256];
-
- extern struct CIA ciab;
- struct MsgPort *port;
-
-
- int PrintCom(UWORD);
- int PrintText(char *);
- void PrintMulti(const int nr);
- void PrintSingle(const int nr);
- BOOL OpenPrinter(void);
- void ClosePrinter(void);
-
-
- /**********************************************************************************/
- /*** ***/
- /**********************************************************************************/
-
- void PrintMulti(const int nr)
- {
- char name[10],string[255];
- int i,j,bn,sn;
-
- SHORT r;
- /* r=(ciab.ciapra &(CIAF_PRTRPOUT|CIAF_PRTRBUSY));
- if (r==1)
- if (!MyReq("Warning: Printer is offline","Resume","Cancel")) return();
-
- if (r==3)
- if (!MyReq("Warning: Printer is no ready","Resume","Cancel")) return();*/
- /*
- #define PrintCom(x) {if (PrintCom(x)) {MyReq("Warning: Printer trouble !",NULL,"Cancel"); ClosePrinter(); CLEAR_POINTER(win); return(); }}
- #define PrintText(x) {if (PrintText(x)) {MyReq("Warning: Printer trouble !",NULL,"Cancel"); ClosePrinter(); CLEAR_POINTER(win); return(); }}
- */
- ZZ_POINTER(win);
- sn=soundnr[i];
- bn=banknr[i];
-
- for (i=0;i<=9;i++) name[i]=m[nr][i];
- name[10]='\0';
-
- if (! OpenPrinter())
- {
- MyReq("Can't print multi-patch",NULL,"Go on");
- CLEAR_POINTER(win);
- return();
- }
-
- PrintCom(aSHORP0); PrintCom(aPROP1); /* Normaler Zeichensatz, Prop aus */
- PrintCom(aSGR1);PrintCom(aSGR4);PrintCom(aSHORP6); /* Underline,Breit on */
- sprintf(string,"\n\nMulti-Patch: %s\n\n",name);
- PrintText(string);
- PrintCom(aSGR22);PrintCom(aSGR24);PrintCom(aSHORP5); /* Breit, Underline aus */
-
- PrintCom(aSHORP2); /* Elite ein */
-
- PrintCom(aSGR4); /* Underline an */
- PrintText("Name ZoneL ZoneH Channel Velo Out Poly Mode Trans Tune Level\n");
- PrintCom(aSGR24); /* Underline aus */
-
- for (i=0;i<=7;i++)
- {
- for (j=0;j<=9;j++)
- {
- if (isprint(s[banknr[i]>3 ? 1 :0][soundnr[i]+8*(banknr[i]>3 ? banknr[i]-4 : banknr[i])][j]))
- name[j]=s[banknr[i]>3 ? 1 :0][soundnr[i]+8*(banknr[i]>3 ? banknr[i]-4 : banknr[i])][j];
- else name[j]=' ';
- }
- if (poly[i]==1) goto Ende;
- name[10]='\0';
- sprintf(string,"%10s",name);
- PrintText(string);
-
- sprintf(string," %2s%2ld",ToneName[zonelow[i]%12],(int)(zonelow[i]/12)-2);
- PrintText(string);
- sprintf(string," %2s%2ld",ToneName[zonelow[i]%12],(int)(zonehigh[i]/12)-2);
- PrintText(string);
-
- sprintf(string," %2ld",rcvch[i]+1);
- PrintText(string);
-
- if(velo[i]==0) strcpy(string," All ");
- if(velo[i]==1) strcpy(string," Soft");
- if(velo[i]==2) strcpy(string," Loud");
- PrintText(string);
-
- if(output[i]==0) strcpy(string," R ");
- if(output[i]==1) strcpy(string," R+L");
- if(output[i]==2) strcpy(string," L ");
- if(output[i]==3) strcpy(string," BYP");
- PrintText(string);
-
- if(poly[i]==0) strcpy(string," VR");
- else sprintf(string," %ld ",poly[i]-1);
- PrintText(string);
-
- if(mode[i]==0) strcpy(string," KEYB");
- if(mode[i]==1) strcpy(string," MIDI");
- if(mode[i]==2) strcpy(string," MIX ");
- PrintText(string);
-
- sprintf(string," %3ld ",transpose[i]-24);
- PrintText(string);
-
- sprintf(string," %3ld ",tune[i]-50);
- PrintText(string);
-
- sprintf(string," %3ld ",level[i]);
- PrintText(string);
-
- PrintText("\n");
- Ende: ;
- }
-
- PrintCom(aSHORP4); /* Condensed an */
- PrintText("\nOutput by K1-II Librarian V "VERSION", (C) in 1990-92 by Andreas Jung\n\n");
- PrintCom(aSHORP3); /* Condensed aus */
-
- MultiEnde: ;
- ClosePrinter();
- CLEAR_POINTER(win);
- return();
- }
-
- /**********************************************************************************/
- /*** ***/
- /**********************************************************************************/
-
- void PrintSingle(const int nr)
- {
- FILE *fp,*fopen();
- char name[10],string[255];
- int i,j,bn,sn;
- SHORT r;
-
- ZZ_POINTER(win);
- sn=soundnr[i];
- bn=banknr[i];
-
- /* r=(ciab.ciapra &(CIAF_PRTRPOUT|CIAF_PRTRBUSY));
- if (r==1)
- if (!MyReq("Warning: Printer is offline","Resume","Cancel"))
- {CLEAR_POINTER(win);return();}
-
- if (r==3)
- if (!MyReq("Warning: Printer is no ready","Resume","Cancel"))
- {CLEAR_POINTER(win); return();} */
- /*
- #define PrintCom(x) {if (PrintCom(x)) {MyReq("Warning: Printer trouble !",NULL,"Cancel"); ClosePrinter(); CLEAR_POINTER(win); return(); }}
- #define PrintText(x) {if (PrintText(x)) {MyReq("Warning: Printer trouble !",NULL,"Cancel"); ClosePrinter(); CLEAR_POINTER(win); return(); }}
- */
-
- for (i=0;i<=9;i++) name[i]=s[nr/32][nr%32][i];
- name[10]='\0';
-
- if (! OpenPrinter())
- {
- MyReq("Can't print single-patch",NULL,"Go on");
- CLEAR_POINTER(win);
- return();
- }
-
- PrintCom(aSHORP0); PrintCom(aPROP1); /* Normaler Zeichensatz, Prop aus */
- PrintCom(aSGR1);PrintCom(aSGR4);PrintCom(aSHORP6); /* Underline,Breit on */
- sprintf(string,"\n\nSingle-Patch: %s\n\n",name);
- PrintText(string);
- PrintCom(aSGR22);PrintCom(aSGR24);PrintCom(aSHORP5); /* Breit, Underline aus */
-
- sprintf(string,"Volume: %3d\n\n",volume);
- PrintText(string);
-
- PrintCom(aSGR1); /* Fettdruck an */
- PrintText("Vibrato-LFO\t\tAuto-Bend\n");
- PrintCom(aSGR22); /* Fettdruck aus */
-
- sprintf(string,"Shape : %s \t\tDepth : %3d\n",ShapeName[lfoshape],autodepth-50);
- PrintText(string);
- sprintf(string,"Speed : %3d\t\tTime : %3d\n",lfospeed,autotime);
- PrintText(string);
- sprintf(string,"Depth : %3d\t\tVel>Dep : %3d\n",vibdepth-50,autobendvel-50);
- PrintText(string);
- sprintf(string,"Prs>Depth: %3d\t\tKS>Time : %3d\n",vibpres-50,autobendks-50);
- PrintText(string);
- sprintf(string,"Vib wheel: %s \tKS-Curve: %3d\n\n",vibwheel=0 ? "Depth" : "Speed",kscurve+1 );
- PrintText(string);
- sprintf(string,"Pitchbend: %3d\t\tS1.S2 : %s\t\tPolymode: %s\n",pitchbend,ModName[ams1],PolyName[polymode]);
- PrintText(string);
- sprintf(string,"Prs>Freq : %3d\t\tS3.S4 : %s\t\tSources : %d\n\n",prsfreq-50,ModName[ams2+3],2*(sources+1));
- PrintText(string);
-
- PrintCom(aSGR1); /* Fettdruck an */
- PrintText("Oscillators\t #1\t\t #2");
- if(sources != 0) PrintText("\t\t #3\t\t #4\n");
- if(sources == 0) PrintText("\n");
- PrintCom(aSGR22); /* Fettdruck aus */
-
- PrintText("Coarse:\t");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- if (keytrack[i]==1)
- {
- sprintf(string,"\t%3d\t",coarse[i]-84);
- PrintText(string);
- }
- else
- {
- sprintf(string,"\t%2s%2ld\t",ToneName[coarse[i]%12],(coarse[i]/12)-4);
- PrintText(string);
- }
- }
- PrintText("\n");
-
- PrintText("Fine:\t");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%3d\t",fine[i]-50);
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("Key on track:");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%s\t",keytrack[i]==1 ? " On" : "Off");
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("Vibrato\t");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%s\t",vibabend[i]==1 ? " On" : "Off");
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("Prs on freq:");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%s\t",prsonfreq[i]==1 ? " On" : "Off");
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("KS>Freq: ");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%3d\t",freqksfreq[i]-50);
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("\n"); /* Nächster Datenblock */
-
-
- PrintText("Level:\t");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%3d\t",envlevel[i]);
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("Delay:\t");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%3d\t",envdelay[i]);
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("Attack:\t");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%3d\t",envattack[i]);
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("Decay:\t");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%3d\t",envdecay[i]);
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("Sustain:");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%3d\t",envsustain[i]);
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("Release:");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%3d\t",envrelease[i]);
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("Vel-Curve:");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%3d\t",velcurve[i]+1);
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("Level>Vel: ");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%3d\t",levelmodvel[i]-50);
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("Level>Prs: ");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%3d\t",levelmodprs[i]-50);
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("Level>KS: ");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%3d\t",levelmodks[i]-50);
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("Time>Vel: ");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%3d\t",timemodvel[i]-50);
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("Time>KS: ");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%3d\t",timemodks[i]-50);
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("\n"); /* Nächster Datenblock */
-
-
- PrintText("Mute:\t");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%s\t",mute[i]==1 ? "Off" : " On");
- PrintText(string);
- }
- PrintText("\n");
-
- PrintText("Waveform:");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%3d\t",wave[i]+1);
- PrintText(string);
- }
- PrintText("\n");
- for (i=0;i<=2*(sources+1)-1;i++)
- {
- sprintf(string,"\t%15s",WaveName[wave[i]]);
- PrintText(string);
- }
- PrintText("\n");
-
- PrintCom(aSHORP4); /* Condensed an */
- PrintText("\nOutput by K1-II Librarian V "VERSION", (C) in 1990-92 by Andreas Jung\n\n");
- PrintCom(aSHORP3); /* Condensed aus */
-
- SingleEnde: ;
- ClosePrinter();
- CLEAR_POINTER(win);
- return();
- }
-
- #undef PrintCom
- #undef PrintText
-
- /**********************************************************************************/
- /*** ***/
- /**********************************************************************************/
-
- int PrintCom(UWORD com)
- {
- struct IOPrtCmdReq prefreq;
- int error;
-
- error=OpenDevice("printer.device",0,&prefreq,0);
- if (error != NULL)
- {
- DeletePort(port);
- return();
- }
-
- prefreq.io_Message.mn_ReplyPort =port;
- prefreq.io_Command =PRD_PRTCOMMAND;
- prefreq.io_PrtCommand =com;
- prefreq.io_Parm0 =0;
- prefreq.io_Parm1 =0;
- prefreq.io_Parm2 =0;
- prefreq.io_Parm3 =0;
-
- error=DoIO(&prefreq);
- CloseDevice(&prefreq);
- return(error);
- }
-
- /**********************************************************************************/
- /*** ***/
- /**********************************************************************************/
-
- int PrintText(char *str)
- {
- struct IOStdReq prreq;
- int error;
-
- error=OpenDevice("printer.device",0,&prreq,0);
- if (error != NULL)
- {
- DeletePort(port);
- return();
- }
-
- prreq.io_Message.mn_ReplyPort = port;
- prreq.io_Command = CMD_WRITE;
- prreq.io_Data = (APTR)&str[0];
- prreq.io_Length = strlen(str);
-
- error=DoIO(&prreq);
- CloseDevice(&prreq);
- return(error);
- }
-
- /**********************************************************************************/
- /*** ***/
- /**********************************************************************************/
-
- BOOL OpenPrinter(void)
- {
- int error;
- struct IOStdReq prreq;
-
- port=(struct MsgPort *) CreatePort("K1-II printer port",0);
- if (port == NULL) return(FALSE);
-
- if (!Exists("devs:printer.device")) return(FALSE);
- return(TRUE);
- }
-
- /**********************************************************************************/
- /*** ***/
- /**********************************************************************************/
-
- void ClosePrinter(void)
- {
- DeletePort(port);
- }
-